
#ifndef MAPSTREET_H_
#define MAPSTREET_H_

#include "mapElement.hpp"
#include "../main/edge.hpp"
#include "../main/node.hpp"
#include "../main/graph.hpp"

class MapStreet : public MapElement{
private:
	Edge	*edge;
	int		nodeOriginPositionX;
	int		nodeOriginPositionY;
	int		nodeDestinyPositionX;
	int		nodeDestinyPositionY;
	double	inclination;
	
	void setIntersectionOriginPositionX(int x);
	void setIntersectionOriginPositionY(int y);
	void setIntersectionDestinyPositionX(int x);
	void setIntersectionDestinyPositionY(int y);

public:
	MapStreet(){}

	MapStreet(Edge *e, Graph *g);

	MapStreet(std::string id);

	static MapStreet* generateMapStreet(Edge *e, Graph *g)
	{
		return (new MapStreet(e,g));
	}

	int getIntersectionOriginPositionX();
	int getIntersectionOriginPositionY();
	int getIntersectionDestinyPositionX();
	int getIntersectionDestinyPositionY();
	double getInclination();

	int getInitialHeight();
	int getFinalHeight();

	int getInitialMPHeight();
	int getFinalMPHeight();

	bool belongToMP();

	virtual ~MapStreet(){}
};

#endif /* MAPSTREET_H_ */